package com.xiejr.api.dto.order;

import com.xiejr.model.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("订单状态表;订单的每个状态更改都需要进行记录 10：待付款  20：已付款，待发货  30：已发货，待收货（7天自动确认）  40：交易成功（此时可以评价）50：交易关闭（待付款时，用户取消 或 长时间未付款，系统识别后自动关闭） 退货/退货，此分支流程不做，所以不加入数据传输对象")
public class OrderStatusDTO extends BaseEntity.BaseDTO {
    private static final long serialVersionUID = 578217101065006485L;
    /**
     * 订单ID;对应订单表的主键id
     */
    @ApiModelProperty(value = "订单ID;对应订单表的主键id")
    @NotEmpty(message = "订单ID;对应订单表的主键id不得为空")
    private String orderId;


    /**
     * 订单状态
     */
    @ApiModelProperty(value = "订单状态")
    @NotNull(message = "订单状态不得为空")
    private Integer orderStatus;


    /**
     * 订单创建时间;对应[1:待付款]状态
     */
    @ApiModelProperty(value = "订单创建时间;对应[1:待付款]状态")
    @NotNull(message = "订单创建时间;对应[1:待付款]状态不得为空")
    private LocalDateTime createdTime;


    /**
     * 支付成功时间;对应[2:已付款，待发货]状态
     */
    @ApiModelProperty(value = "支付成功时间;对应[2:已付款，待发货]状态")
    @NotNull(message = "支付成功时间;对应[2:已付款，待发货]状态不得为空")
    private LocalDateTime payTime;


    /**
     * 发货时间;对应[3：已发货，待收货]状态
     */
    @ApiModelProperty(value = "发货时间;对应[3：已发货，待收货]状态")
    @NotNull(message = "发货时间;对应[3：已发货，待收货]状态不得为空")
    private LocalDateTime deliverTime;


    /**
     * 交易成功时间;对应[4：交易成功]状态
     */
    @ApiModelProperty(value = "交易成功时间;对应[4：交易成功]状态")
    @NotNull(message = "交易成功时间;对应[4：交易成功]状态不得为空")
    private LocalDateTime successTime;


    /**
     * 交易关闭时间;对应[5：交易关闭]状态
     */
    @ApiModelProperty(value = "交易关闭时间;对应[5：交易关闭]状态")
    @NotNull(message = "交易关闭时间;对应[5：交易关闭]状态不得为空")
    private LocalDateTime closeTime;


    /**
     * 留言时间;用户在交易成功后的留言时间
     */
    @ApiModelProperty(value = "留言时间;用户在交易成功后的留言时间")
    @NotNull(message = "留言时间;用户在交易成功后的留言时间不得为空")
    private LocalDateTime commentTime;


    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @NotNull(message = "更新时间不得为空")
    private LocalDateTime updatedTime;


}